home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2008 September
/
PCWorld_2008-09_cd.bin
/
domacnost a kancelar
/
joomla
/
Joomla_1.5.4-Stable-Full_Package.exe
/
libraries
/
loader.php
< prev
Wrap
PHP Script
|
2008-07-06
|
4KB
|
188 lines
<?php
/**
* @version $Id: loader.php 10381 2008-06-01 03:35:53Z pasamio $
* @package Joomla.Framework
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/
if(!defined('DS')) {
define( 'DS', DIRECTORY_SEPARATOR );
}
/**
* @package Joomla.Framework
*/
class JLoader
{
/**
* Loads a class from specified directories.
*
* @param string $name The class name to look for ( dot notation ).
* @param string $base Search this directory for the class.
* @param string $key String used as a prefix to denote the full path of the file ( dot notation ).
* @return void
* @since 1.5
*/
function import( $filePath, $base = null, $key = 'libraries.' )
{
static $paths;
if (!isset($paths)) {
$paths = array();
}
$keyPath = $key ? $key . $filePath : $filePath;
if (!isset($paths[$keyPath]))
{
if ( ! $base ) {
$base = dirname( __FILE__ );
}
$parts = explode( '.', $filePath );
$classname = array_pop( $parts );
switch($classname)
{
case 'helper' :
$classname = ucfirst(array_pop( $parts )).ucfirst($classname);
break;
default :
$classname = ucfirst($classname);
break;
}
$path = str_replace( '.', DS, $filePath );
if (strpos($filePath, 'joomla') === 0)
{
/*
* If we are loading a joomla class prepend the classname with a
* capital J.
*/
$classname = 'J'.$classname;
$classes = JLoader::register($classname, $base.DS.$path.'.php');
$rs = isset($classes[strtolower($classname)]);
}
else
{
/*
* If it is not in the joomla namespace then we have no idea if
* it uses our pattern for class names/files so just include.
*/
$rs = include($base.DS.$path.'.php');
}
$paths[$keyPath] = $rs;
}
return $paths[$keyPath];
}
/**
* Add a class to autoload
*
* @param string $classname The class name
* @param string $file Full path to the file that holds the class
* @return array|boolean Array of classes
* @since 1.5
*/
function & register ($class = null, $file = null)
{
static $classes;
if(!isset($classes)) {
$classes = array();
}
if($class && is_file($file))
{
// Force to lower case.
$class = strtolower($class);
$classes[$class] = $file;
// In php4 we load the class immediately.
if((version_compare( phpversion(), '5.0' ) < 0)) {
JLoader::load($class);
}
}
return $classes;
}
/**
* Load the file for a class
*
* @access public
* @param string $class The class that will be loaded
* @return boolean True on success
* @since 1.5
*/
function load( $class )
{
$class = strtolower($class); //force to lower case
if (class_exists($class)) {
return;
}
$classes = JLoader::register();
if(array_key_exists( strtolower($class), $classes)) {
include($classes[$class]);
return true;
}
return false;
}
}
/**
* When calling a class that hasn't been defined, __autoload will attempt to
* include the correct file for that class.
*
* This function get's called by PHP. Never call this function yourself.
*
* @param string $class
* @access public
* @return boolean
* @since 1.5
*/
function __autoload($class)
{
if(JLoader::load($class)) {
return true;
}
return false;
}
/**
* Global application exit.
*
* This function provides a single exit point for the framework.
*
* @param mixed Exit code or string. Defaults to zero.
*/
function jexit($message = 0) {
exit($message);
}
/**
* Intelligent file importer
*
* @access public
* @param string $path A dot syntax path
* @since 1.5
*/
function jimport( $path ) {
return JLoader::import($path);
}